# -*- coding: UTF-8 -*- #
"""
-------真正的勇士， 敢于直面惨淡的Warning、 敢于正视淋漓的Error-----
@author : 贾鹏博
@file : 8、常见的交互方法(click,send_keys,clear,获取元素属性).py
@time : 2022/5/26 12:01
"""

"""
元素的常用方法：
    1、点击方法  element.click()
    2、输入操作  element.send_keys('appium')
    3、设置元素的值 element.set_value('appium')
    4、清除操作  element.clear()
    5、是否可见  element.is_displayed()   返回 True/False
    6、是否可用  element.is_enabled()    返回 True/False
    7、是否被选中  element.is_selected()  返回 True/False
    8、获取属性   get_attribute(name)
        get_attribute() 可以获取的属性 ：
        1、resource_id/resource 返回 resource-id属性对应的值
        2、text 返回 text属性对应的值
        3、class 返回 class属性对应的值
        4、content-desc/contentDescripation 返回 content-desc属性对应的值

元素的常用属性
    1、获取元素文本  element.text
    2、获取元素坐标  element.location   ->  如bounds : [0,336][936,461]    结果 : {'y': 19,'x': 498}
    3、获取元素尺寸（高和宽）  element.size    结果 ： {'width':500,'height':22}
    
"""

import time
from appium import webdriver
from appium.webdriver.common.appiumby import AppiumBy


class TestJH():

    def setup(self):
        desired_caps = {}
        desired_caps['platformName'] = "Android"
        desired_caps['platformVersion'] = '6.0'
        desired_caps['deviceName'] = 'emulator-5554'
        desired_caps['appPackage'] = 'io.appium.android.apis'
        desired_caps['appActivity'] = '.ApiDemos'
        desired_caps['noReset'] = 'true'
        # desired_caps['dontStopAppOnReset'] = 'true'
        desired_caps['skipDeviceInitialization'] = 'true'
        desired_caps['unicodeKeyBoard'] = 'true'
        desired_caps['resetKeyBoard'] = 'true'
        self.driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)
        self.driver.implicitly_wait(5)

    def teardown(self):
        self.driver.quit()

    def test_seeking(self):
        """
        1、点击 Animation 进入下个页面
        2、点击 Seeking 进入下个页面
        3、查看 [RUN] 按钮是否显示/是否可点击
        4、查看 [滑动条] 是否显示/是否可用/是否可点击
        5、获取 [滑动条] 长度
        6、点击 [滑动条] 中心位置
        :return:
        """
        # 1、点击 Animation 进入下个页面
        self.driver.find_element(AppiumBy.ACCESSIBILITY_ID, 'Animation').click()
        # 2、点击 Seeking 进入下个页面
        self.driver.find_element(AppiumBy.ACCESSIBILITY_ID, 'Seeking').click()
        # 3、查看 [RUN] 按钮是否显示   ->   返回 True/False
        run_element = self.driver.find_element(AppiumBy.ACCESSIBILITY_ID, 'Run')
        # 3、查看 [RUN] 按钮是否显示
        run_is_displayed = run_element.is_displayed()
        # 3、查看 [RUN] 按钮是否可点击
        run_is_clickable = run_element.get_attribute('clickable')
        print(f'[Run]按钮是否可见：{run_is_displayed},是否可点击：{run_is_clickable}')

        # 4、查看 [滑动条] 是否显示   ->  返回 True/False
        seekbar_element = self.driver.find_element(AppiumBy.ID, 'io.appium.android.apis:id/seekBar')
        # 4、查看 [滑动条] 是否显示
        seekbar_displayed = seekbar_element.is_displayed()
        # 4、查看 [滑动条] 是否可用
        seekbar_enable = seekbar_element.is_enabled()
        # 4、查看 [滑动条] 是否可点击
        seekbar_clickable = seekbar_element.get_attribute('clickable')
        print(f'[seekbar 滑动条是否可见]:{seekbar_displayed},是否可用:{seekbar_enable},是否可点击:{seekbar_clickable}')

        # 5、获取 [滑动条] 长度   是字典格式 ：{'width':500,'height':22]
        seekbar_size = seekbar_element.size
        # 长度 ： 宽
        width = seekbar_size['width']
        # 高
        height = seekbar_size['height']
        print(f'[滑动条] 长为{width},高为{height}')

        # 6、点击 [滑动条] 中心位置
        seek_location = seekbar_element.location
        x = seek_location.get('x')
        y = seek_location.get('y')
        seekbar_center_x = x + width / 2
        seekbar_center_y = y
        self.driver.tap([(seekbar_center_x, seekbar_center_y)])
        time.sleep(5)
